import java.util.HashMap;

public class Solution {
    public boolean lemonadeChange(int[] bills) {
        int len = bills.length;

        //key为面额，value为个数
        HashMap<Integer, Integer> map = new HashMap<>();
        map.put(5, 0);
        map.put(15, 0);
        map.put(20, 0);

        for (int i = 0; i < len; i++) {
            switch (bills[i]) {
                case 5 :
                    map.put(5, map.getOrDefault(5, 0) + 1);
                    break;
                case 10 :
                    map.put(10, map.getOrDefault(10, 0) + 1);
                    if (map.getOrDefault(5, 0) == 0) {
                        return false;
                    }
                    map.put(5, map.get(5) - 1);
                    break;
                case 20 :
                    map.put(20, map.getOrDefault(20, 0) + 1);
                    if (map.getOrDefault(5, 0) >= 1 && map.getOrDefault(10, 0) >= 1) {//10 + 5,应该尽可能的将10找出去，5的作用比10大
                        map.put(10, map.get(10) - 1);
                        map.put(5, map.get(5) - 1);
                    } else if (map.getOrDefault(5, 0) >= 3) {//5 + 5 + 5
                        map.put(5, map.get(5) - 3);
                    } else {
                        return false;
                    }
            }
        }

        return true;

    }
}
